package com.cencat.route.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 配送统计信息VO
 * 
 * @author cencat
 * @version 1.0
 * @since 2024-01-01
 */
@Data
@Schema(description = "配送统计信息")
public class DeliveryStatisticsVO {

    @Schema(description = "总配送数量")
    private Long totalDeliveryCount;

    @Schema(description = "待配送数量")
    private Long pendingDeliveryCount;

    @Schema(description = "配送中数量")
    private Long inTransitDeliveryCount;

    @Schema(description = "已送达数量")
    private Long deliveredCount;

    @Schema(description = "配送失败数量")
    private Long failedDeliveryCount;

    @Schema(description = "已取消配送数量")
    private Long cancelledDeliveryCount;

    @Schema(description = "异常配送数量")
    private Long exceptionDeliveryCount;

    @Schema(description = "今日新增配送数量")
    private Long todayNewDeliveryCount;

    @Schema(description = "本周新增配送数量")
    private Long weekNewDeliveryCount;

    @Schema(description = "本月新增配送数量")
    private Long monthNewDeliveryCount;

    @Schema(description = "今日完成配送数量")
    private Long todayCompletedDeliveryCount;

    @Schema(description = "本周完成配送数量")
    private Long weekCompletedDeliveryCount;

    @Schema(description = "本月完成配送数量")
    private Long monthCompletedDeliveryCount;

    @Schema(description = "平均配送时长（分钟）")
    private BigDecimal averageDeliveryDuration;

    @Schema(description = "最长配送时长（分钟）")
    private BigDecimal maxDeliveryDuration;

    @Schema(description = "最短配送时长（分钟）")
    private BigDecimal minDeliveryDuration;

    @Schema(description = "配送成功率")
    private BigDecimal deliverySuccessRate;

    @Schema(description = "配送失败率")
    private BigDecimal deliveryFailureRate;

    @Schema(description = "配送取消率")
    private BigDecimal deliveryCancelRate;

    @Schema(description = "配送异常率")
    private BigDecimal deliveryExceptionRate;

    @Schema(description = "平均配送距离")
    private BigDecimal averageDeliveryDistance;

    @Schema(description = "最长配送距离")
    private BigDecimal maxDeliveryDistance;

    @Schema(description = "最短配送距离")
    private BigDecimal minDeliveryDistance;

    @Schema(description = "总配送距离")
    private BigDecimal totalDeliveryDistance;

    @Schema(description = "平均配送费用")
    private BigDecimal averageDeliveryFee;

    @Schema(description = "最高配送费用")
    private BigDecimal maxDeliveryFee;

    @Schema(description = "最低配送费用")
    private BigDecimal minDeliveryFee;

    @Schema(description = "总配送费用")
    private BigDecimal totalDeliveryFee;

    @Schema(description = "平均客户评分")
    private BigDecimal averageCustomerRating;

    @Schema(description = "准时送达率")
    private BigDecimal onTimeDeliveryRate;

    @Schema(description = "统计时间")
    private LocalDateTime statisticsTime;

}